package codej.ast;

import java.util.*;

import codej.ast.*;
import codej.gen.java.*;

public class Selector {

	private String dotOrSquareParenthesis;
	private String id;
	private List<Expression> expressions;
	private Selector selector;
	private Object nonWildcardTypeArguments;
	private Object innerCreator;
	private String suffix;
	private Expression expression;
	
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}

	public Selector(String dotOrSquareParenthesis, String id, List<Expression> expressions) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.id = id;
		this.expressions = expressions;
	}

	public Selector(String dotOrSquareParenthesis, String id) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.id = id;
	}

	public Selector(String dotOrSquareParenthesis, String id, Selector selector) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.id = id;
		this.selector = selector;
	}

	public Selector(String dotOrSquareParenthesis, String id, Object nonWildcardTypeArguments, Object innerCreator) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.id = id;
		this.nonWildcardTypeArguments = nonWildcardTypeArguments;
		this.innerCreator = innerCreator;
	}

	public Selector(String dotOrSquareParenthesis, Expression expression, String suffix) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.expression = expression;
		this.suffix = suffix;
	}

	public Selector(List<Expression> expressions) {
		this.expressions = expressions;
	}

	public Selector(Expression expression) {
		this.expression = expression;
	}

	public Selector(String dotOrSquareParenthesis, String id, Expression expression) {
		this.dotOrSquareParenthesis = dotOrSquareParenthesis;
		this.id = id;
		this.expression = expression;
	}
}
